/**
 * Project Name:OrgService
 * File Name:OrgService.java
 * Package Name:com.bwda.dsrs.systemservice.service
 * Date:2019年4月28日
 * Copyright (c) 2019, 江苏保旺达软件有限公司 All Rights Reserved.
 *
 */
package com.bwda.dsrs.systemservice.service;

import com.bwda.dsrs.systemservice.domain.form.org.OrgCreateForm;
import com.bwda.dsrs.systemservice.domain.form.org.OrgTreeForm;
import com.bwda.dsrs.systemservice.domain.form.org.OrgUserAdminForm;
import com.bwda.dsrs.systemservice.domain.form.org.OrgUserTreeForm;
import com.bwda.dsrs.systemservice.domain.po.org.OrgPo;
import com.bwda.dsrs.systemservice.domain.condition.org.OrgCondition;
import com.bwda.dsrs.systemservice.domain.vo.org.OrgVo;

import java.util.List;
import java.util.Map;

/**
 * 组织菜单管理服务类
 *
 * @author youzhen
 * @date 2019年4月28日
 */
public interface OrgService extends BaseService<OrgPo, OrgCondition> {

    /**
     * 获得组织管理员
     *
     * @return list
     */
    List<OrgUserAdminForm> queryAdmin();

    /**
     * 获得组织管理员
     *
     * @param id id
     * @return list
     */
    List<OrgUserAdminForm> queryOrgAdmin(Integer id);

    /**
     * 获得ID号
     *
     * @return integer
     */
    Integer queryId();

    /**
     * 转换组织树
     *
     * @param poList po list
     * @return list
     */
    List<OrgTreeForm> queryTree(List<OrgTreeForm> poList);

    /**
     * 查询组织树
     *
     * @param orgTreeForm org tree form
     * @return list
     */
    List<OrgTreeForm> queryTreeList(OrgTreeForm orgTreeForm);

    /**
     * 查询组织
     *
     * @param form form
     * @return list
     */
    List<OrgTreeForm> queryOrgList(OrgTreeForm form);

    /**
     * ID查询组织树
     *
     * @param id id
     * @return list
     */
    List<OrgTreeForm> queryTreeChildren(int id);

    /**
     * 批量删除
     *
     * @param ids ids
     * @return map
     */
    Map<String,String> deleteUserByIds(String ids);

    /**
     * 查询组织
     *
     * @return list
     */
    List<OrgUserTreeForm> queryUserOrgList();

    /**
     * 转换组织树
     *
     * @param poList po list
     * @return list
     */
    List<OrgUserTreeForm> queryUserOrgTree(List<OrgUserTreeForm> poList);

    /**
     * 根据用户获得组织信息
     *
     * @param userCode user code
     * @return org create form
     */
    OrgCreateForm queryOrg(String userCode);

    /**
     * 获得组织信息
     *
     * @param id id
     * @return org create form
     */
    OrgCreateForm queryByIdOrg(Integer id);

    /**
     * 获得批量组织信息
     *
     * @param ids ids
     * @return list
     */
    List<OrgCreateForm> queryOrgById(String ids);


    /**
     * 获得单个组织树
     *
     * @param id id
     * @return list
     */
    List<OrgUserTreeForm> queryOrgSingleTree(Integer id);


    /**
     * 根据orgId获取所有上级组织（包括本组织）
     *
     * @param orgId org id
     * @return list
     */
    List<OrgCreateForm> queryParentOrgByUserCode(Integer orgId);

    /**
     * 判断组织是否重复
     *
     * @param orgCondition org condition
     * @return list
     */
    List<OrgPo> queryName(OrgCondition orgCondition);

    /**
     * 更改组织管理员
     *
     * @param userCode user code
     * @param orgId    org id
     * @return
     */
    void updateOrgAdmin(String userCode, Integer orgId);

    /**
     * 查询更改组织管理员
     *
     * @param userCode user code
     * @return List list
     */
    List<OrgPo> queryOrgByUserCode(String userCode);

}